package com.lanou3g.code0510;

import org.apache.commons.io.IOUtils;

import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.InputStream;

/**
 * Created by dllo on 18/5/10.
 */
/*今天课程小结:
1.反射:反射三个最基本的操作:(反射的起始永远是为了获取类类型)
        1.创建对象(获取类类型)
        2.给属性赋值(通过反射操作属性)
        3.调用方法
  反射获取类类型的几种方式:
  1.通过类名获取类类型(类名.class)
  2.通过字符串获取类类型
  3.通过对象获取类类型
2.注解,注解的使用
3.Servlet中的Response相应的一些方法的使用
 */

/*
可以通过@WebServlet注解的形式来配置servlet的名字和路径,这种写法就不需要去web.xml中去注册了,
效果和写在web.xml中是一致的
 */
//@WebServlet帮你写配置文件用的,注解里有一些值,就是你在配置文件里能写的所有的值(java自己的,与servlet无关)
//实际开发中,不会用/*来当做Servlet的路径,因为假如你有图片链接,会被Servlet拦截下因为他是/*.
@WebServlet(name = "HWServlet", urlPatterns = "/error404")
public class HWServlet extends HttpServlet {
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.setContentType("text/html;charset=utf-8");
        ServletContext app = getServletContext();
        InputStream is = app.getResourceAsStream("404.html");
        String html = IOUtils.toString(is);
        response.getWriter().println(html);
        is.close();
    }
}
